import axios from 'axios'

//4.axios的配置选项
axios.defaults.baseURL = 'http://httpbin.org'
axios.defaults.timeout = 10000
// axios.defaults.headers = {}
//axios的实例对象
//1.模拟get请求
// axios.get('').then((res) => {
//   console.log(res.data)
// })
//2.get请求，并传入参数
axios
  .get('/get', { params: { name: 'cys' }, timeout: 5000, headers: {} })
  .then((res) => {
    console.log(res.data)
  })

//3.post请求
axios.post('/post', { data: { name: 'cys' } }).then((res) => {
  console.log(res.data)
})
//Promise本身可以有类型
// new Promise<string>((resolve) => {
//   resolve('aaa')
// }).then((res) => {
//   console.log(res.length)
// })

//5.axios.all -> 多个请求，一起返回
axios
  .all([
    axios.get('/get', { params: { name: 'cys', age: 18 } }),
    axios.post('/post', { data: { name: 'cys', age: 18 } })
  ])
  .then((res) => {
    console.log(res[0].data)
    console.log(res[1].data)
  })
//6.axios的拦截器
//fn1:请求发送成功会执行的函数  fn2:请求发送失败会执行的函数
axios.interceptors.request.use(
  (config) => {
    //想做的一些操作
    //1.给请求添加token
    //2.isLoding动画
    console.log('请求成功的拦截')
    return config
  },
  (err) => {
    console.log('请求发送错误')
    return err
  }
)
//fn1：请求响应成功会执行的函数(服务器正常返回了数据) fn2:请求响应失败会执行的函数
axios.interceptors.response.use(
  (res) => {
    console.log('响应成功的拦截')
    return res
  },
  (err) => {
    console.log('响应失败的拦截')
  }
)
